跳到主要内容

Linux 文件内容的过滤与搜索

grep 查找文件内容

使用 grep 命令

# 语法
grep 要搜索的内容 文件路径

参数:

-n 显示行号 -v 反向搜索:不包含内容的部分 例如去掉注释的内容 -i 忽略大小写 -c 有多少行含有匹配的

# 就能找到这个在哪行
$ grep -n 要搜索的内容 文件路径

$ grep '#' -v /etc/services

$ grep -c t file1
2

如果有多个匹配模式可以使用 -e,如下输出了含有字符 t 或字符 f 的所有行

$ grep -e t -e f file1
two
three
four
five

通配符的使用

^ 找以什么开头的行 $ 找以什么结尾的

# 去掉以 # 开头的行
grep ^'#' -v /etc/services

grep 'abc'$ /etc/services

配合管道使用(ps -aux 查看进程)

ps -aux | grep "进程名称"

tr 替换字符

Linux tr 命令用于转换或删除文件中的字符。

tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。

语法:

tr [-cdst][--help][--version][原始字符][目标字符]  
tr [OPTION]…SET1[SET2]

参数:

-c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
-d, --delete:删除指令字符
-s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符
-t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
--help:显示程序用法信息
--version:显示程序本身的版本信息

使用例:

cat testfile | tr a-z A-Z #转换后的输出

LINUX NETWORKS ARE BECOMING MORE AND MORE COMMON, BUT SCURITY IS OFTEN AN OVERLOOKED
ISSUE. UNFORTUNATELY, IN TODAY’S ENVIRONMENT ALL NETWORKS ARE POTENTIAL HACKER TARGETS,
FROM TP-SECRET MILITARY RESEARCH NETWORKS TO SMALL HOME LANS.
LINUX NETWORK SECURTY FOCUSES ON SECURING LINUX IN A NETWORKED ENVIRONMENT, WHERE THE
SECURITY OF THE ENTIRE NETWORK NEEDS TO BE CONSIDERED RATHER THAN JUST ISOLATED MACHINES.
IT USES A MIX OF THEORY AND PRACTICL TECHNIQUES TO TEACH ADMINISTRATORS HOW TO INSTALL AND
USE SECURITY APPLICATIONS, AS WELL AS HOW THE APPLCATIONS WORK AND WHY THEY ARE NECESARY.

sort 对文件内容进行排序

sort 命令按照会话指定的默认语言的排序规则对文本文件中的数据行排序。

对数字排序时默认情况下,sort 命令会把数字当做字符来执行标准的字符排序,解决这个问题可用 -n 参数,它会告诉 sort 命令把数字识别成数字而不是字符,并且按值排序。

例如创建一个 test.txt 文件

21
3131
311
23131
23131
797893
121

使用 sort

$ sort -n test.txt
21
121
311
3131
23131
23131
797893

如果文件刚好有分隔符,可以使用分隔符切割后再指定从切割后的第块进行排序

-t 参数来指定字段分隔符,然后用 -k 参数来指定排序的字段。

e.g. 密码文件 /etc/passwd 根据用户 ID 进行数值排序

$ sort -t ':' -k 3 -n /etc/passwd
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
mail:x:8:12::/var/spool/mail:/usr/bin/nologin
ftp:x:14:11::/srv/ftp:/usr/bin/nologin
http:x:33:33::/srv/http:/usr/bin/nologin
uuidd:x:68:68::/:/usr/bin/nologin